package com.ruoyi.platform.listener;

import org.springframework.stereotype.Component;

/**
 * @description 数据解析类
 * @author:Figo2020
 * @date: 2025/10/25 23:12
 */
@Component
public class DataParser {
    public static void parseAndProcess(String data, String clientInfo) {
        System.out.println("来自 " + clientInfo + " 的原始数据: " + data);
        
        // 去除首尾空白
        String trimmedData = data.trim();
        
        if (trimmedData.isEmpty()) {
            System.out.println("接收到空数据，忽略处理");
            return;
        }
        
        // 解析JSON格式数据
        if (trimmedData.startsWith("{") && trimmedData.endsWith("}")) {
            parseJsonData(trimmedData, clientInfo);
        }
        // 解析XML格式数据
        else if (trimmedData.startsWith("<") && trimmedData.endsWith(">")) {
            parseXmlData(trimmedData, clientInfo);
        }
        // 解析键值对格式
        else if (trimmedData.contains("=")) {
            parseKeyValueData(trimmedData, clientInfo);
        }
        // 解析分隔符格式
        else if (trimmedData.contains("|") || trimmedData.contains(",")) {
            parseDelimitedData(trimmedData, clientInfo);
        }
        // 默认文本处理
        else {
            parseTextData(trimmedData, clientInfo);
        }
    }
    
    private static void parseJsonData(String data, String clientInfo) {
        System.out.println("检测到JSON格式数据");
        System.out.println("JSON内容: " + data);
        
        // 这里可以添加JSON解析逻辑，例如使用Jackson库
        // ObjectMapper mapper = new ObjectMapper();
        // try {
        //     JsonNode node = mapper.readTree(data);
        //     System.out.println("解析后的JSON对象: " + node);
        // } catch (Exception e) {
        //     System.err.println("JSON解析失败: " + e.getMessage());
        // }
    }
    
    private static void parseXmlData(String data, String clientInfo) {
        System.out.println("检测到XML格式数据");
        System.out.println("XML内容: " + data);
    }
    
    private static void parseKeyValueData(String data, String clientInfo) {
        System.out.println("检测到键值对格式数据");
        String[] pairs = data.split("&");
        for (String pair : pairs) {
            String[] keyValue = pair.split("=", 2);
            if (keyValue.length == 2) {
                System.out.println("  键: " + keyValue[0] + ", 值: " + keyValue[1]);
            }
        }
    }
    
    private static void parseDelimitedData(String data, String clientInfo) {
        System.out.println("检测到分隔符格式数据");
        String delimiter = data.contains("|") ? "\\|" : ",";
        String[] parts = data.split(delimiter);
        
        System.out.println("解析后的数据段 (" + parts.length + " 个):");
        for (int i = 0; i < parts.length; i++) {
            System.out.println("  段[" + i + "]: " + parts[i].trim());
        }
    }
    
    private static void parseTextData(String data, String clientInfo) {
        System.out.println("检测到普通文本数据");
        System.out.println("文本长度: " + data.length());
        System.out.println("文本内容: " + data);
        
        // 可以添加更多的文本分析逻辑
        if (data.length() > 100) {
            System.out.println("警告: 数据长度超过100字符，可能存在性能问题");
        }
    }
}
